//
// Created by 32827 on 2023/11/23.
//
#include "yz_main.h"
//yz全局状态表

void core_main(void){
    yz_status_sheet_set(YZ_FLAG_STOP,YZF_FALSE);
    int re=user_main();
    //当返回值不为0时,程序出错，退出程序
    if(re!=0){
        printf("[Core] user_main return code is %d\n",re);
    }
    //事件循环
    while (!yz_status_sheet_get(YZ_FLAG_STOP)){
        //错误类型将被保存于 YZ_FLAG_ERROR_TYPE
        //错误句柄将被保存于 YZ_FLAG_ERROR_HANDLER_INDEX
        yz_status_sheet_set(YZ_FLAG_ERROR_TYPE,yzf_global_loop(yz_status_sheet_get_ptr(YZ_FLAG_ERROR_HANDLER_INDEX)));
        YZF_CHECK_RETURN(yz_status_sheet_get(YZ_FLAG_ERROR_TYPE)) //--> YZF_ERROR_HANDLE(YZF_RESULT error)
    }
    //循环结束后处理
}
#if YZ_USE_DEFAULT_CLOCK
void SystemInit(void)
{
    ///默认 72Mhz时钟设置
    //1.开启外部时钟 HSE
    yzf_clock_HSE_ON();
    //2. PLLCLK设置
    //设置 PLL 倍频系数 9倍频
    yzf_clock_PLL_MUL(9);
    //设置 HSE 作为 PLLCLK 输入源
    yzf_clock_PLL_set_source(hse);
    //3. 打开 PLL 电路
    yzf_clock_PLL_ON();
    //4. 设置 FLASH 时延 让HSE能正常工作
    //72Mhz时 FLASH响应时延位2个，同步FLASH内部速度
    //0< SYSCLK <24MHz 0 waitstate 0b000
    //24< SYSCLK <48MHz 1 waitstate 0b001
    //48< SYSCLK <72MHz 2 waitstate 0b010
    FLASH->ACR |= 1<<1;
    //5. SYSCLK设置
    //设置 PLL 作为 SYSCLK 输入源
    yzf_clock_SYS_set_source(pll);
    //6. 设置 AHP1 预分频系数为2
    yzf_clock_APB1_DIV(2);
}
#endif
void YZF_ERROR_HANDLE(YZF_RESULT error){
    user_error_handler(error);
}